home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 015a / vaxutils.zip / GRAPH.COM < prev    next >
Text File  |  1990-12-07  |  7KB  |  164 lines

  1. $ SET NOVERIFY
  2. $!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  3. $! GRAPHICS.COM
  4. $!    This subroutine is used to create on screen graphics on a VT320
  5. $!    terminal.  A text file is created that redefines the characters
  6. $!    and displays  them.  This  is created from  an input text  file
  7. $!    that  is defined by  the user.  The  basic layout of  the input
  8. $!    file is  an enlarged version of  the graphic.  Any  displayable
  9. $!    character  (except tab  as it would  be interpreted as a single
  10. $!    space  instead of the eight  or so that it usually  stands for)
  11. $!    can be used for off pixels, all on pixels are signified by "*".
  12. $!    The only limit is that the vt320 terminal's downloadable
  13. $!    character set has a limit of 94 characters.  This program will
  14. $!    continue beyond that but those characters that are "out of
  15. $!    bounds" will not display in the final graphic.
  16. $!
  17. $!    To calculate the number of characters required in a graphic
  18. $!    use the following formula:
  19. $!        (C / 15) round up to the nearest integer
  20. $!        * (R / 12) round up to the neareat integer
  21. $!            where C is the number of columns (record length)
  22. $!            and R is the number of row (number of records)
  23. $!
  24. $!    Written by: Harry Delien Dec 5, 1990
  25. $!
  26. $!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  27. $!    12/06/90 - Allow variable length records
  28. $!    12/06/90 - Patch to maintain cursor position while character
  29. $!           redefinitions are being downloaded.
  30. $!    12/06/90 - Query output modes normal, double width, or double height
  31. $!    12/06/90 - If record length is evenly divisable by 15 program writes
  32. $!           a blank character (wasteful).  Bug fix.
  33. $!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  34. $ SET = ""    ! Get rid of local system symbol
  35. $ OPEN = ""
  36. $    ALPHABET = "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~"
  37. $    PRINT_STRING = ""
  38. $    PRINT_CHAR = 0
  39. $!
  40. $ GET_INFILE_NAME:
  41. $    INQUIRE IN_FILE "What is the name of the input file "
  42. $    IF( F$SEARCH("''IN_FILE'") .EQS. "")THEN GOTO NO_INFILE
  43. $!
  44. $ GET_OUTFILE_NAME:
  45. $    INQUIRE OUT_FILE "What is the name of the output file "
  46. $    IF( OUT_FILE .EQS. "" )THEN GOTO GET_OUTFILE_NAME
  47. $    IF( F$SEARCH("''OUT_FILE'") .NES. "")THEN GOTO ALREADY
  48. $!
  49. $ GET_DISPLAY_MODE:
  50. $    INQUIRE DIS_MODE "Display (N)ormal, Double-(W)idth, or Double-(H)eight"
  51. $    IF (DIS_MODE.NES."N".AND.DIS_MODE.NES."W".AND.DIS_MODE.NES."H")THEN GOTO GET_DISPLAY_MODE
  52. $!
  53. $ OPEN:
  54. $    OPEN INPUT_FILE 'IN_FILE
  55. $    ON CONTROL_Y THEN GOTO EXIT_1
  56. $    OPEN/WRITE OUTPUT_FILE 'OUT_FILE
  57. $    ON CONTROL_Y THEN GOTO EXIT
  58. $!
  59. $ READ:
  60. $    LOOP_VAR = 0
  61. $    MAX_SIZE = 0
  62. $    BIT_1 = ""
  63. $    BIT_2 = ""
  64. $    BIT_3 = ""
  65. $    BIT_4 = ""
  66. $    BIT_5 = ""
  67. $    BIT_6 = ""
  68. $    BIT_7 = ""
  69. $    BIT_8 = ""
  70. $    BIT_9 = ""
  71. $    BIT_10 = ""
  72. $    BIT_11 = ""
  73. $    BIT_12 = ""
  74. $    READ/ERROR=DONE INPUT_FILE BIT_1
  75. $    MAX_SIZE = F$LENGTH(BIT_1)
  76. $    READ/ERROR=PROCESS INPUT_FILE BIT_2
  77. $    IF( F$LENGTH(BIT_2) .GT. MAX_SIZE )THEN MAX_SIZE = F$LENGTH(BIT_2)
  78. $    READ/ERROR=PROCESS INPUT_FILE BIT_3
  79. $    IF( F$LENGTH(BIT_3) .GT. MAX_SIZE )THEN MAX_SIZE = F$LENGTH(BIT_3)
  80. $    READ/ERROR=PROCESS INPUT_FILE BIT_4
  81. $    IF( F$LENGTH(BIT_4) .GT. MAX_SIZE )THEN MAX_SIZE = F$LENGTH(BIT_4)
  82. $    READ/ERROR=PROCESS INPUT_FILE BIT_5
  83. $    IF( F$LENGTH(BIT_5) .GT. MAX_SIZE )THEN MAX_SIZE = F$LENGTH(BIT_5)
  84. $    READ/ERROR=PROCESS INPUT_FILE BIT_6
  85. $    IF( F$LENGTH(BIT_6) .GT. MAX_SIZE )THEN MAX_SIZE = F$LENGTH(BIT_6)
  86. $    READ/ERROR=PROCESS INPUT_FILE BIT_7
  87. $    IF( F$LENGTH(BIT_7) .GT. MAX_SIZE )THEN MAX_SIZE = F$LENGTH(BIT_7)
  88. $    READ/ERROR=PROCESS INPUT_FILE BIT_8
  89. $    IF( F$LENGTH(BIT_8) .GT. MAX_SIZE )THEN MAX_SIZE = F$LENGTH(BIT_8)
  90. $    READ/ERROR=PROCESS INPUT_FILE BIT_9
  91. $    IF( F$LENGTH(BIT_9) .GT. MAX_SIZE )THEN MAX_SIZE = F$LENGTH(BIT_9)
  92. $    READ/ERROR=PROCESS INPUT_FILE BIT_10
  93. $    IF( F$LENGTH(BIT_10) .GT. MAX_SIZE )THEN MAX_SIZE = F$LENGTH(BIT_10)
  94. $    READ/ERROR=PROCESS INPUT_FILE BIT_11
  95. $    IF( F$LENGTH(BIT_11) .GT. MAX_SIZE )THEN MAX_SIZE = F$LENGTH(BIT_11)
  96. $    READ/ERROR=PROCESS INPUT_FILE BIT_12
  97. $    IF( F$LENGTH(BIT_12) .GT. MAX_SIZE )THEN MAX_SIZE = F$LENGTH(BIT_12)
  98. $!
  99. $ PROCESS:
  100. $    PRINT_CHAR = PRINT_CHAR + 1
  101. $    UP_STRING = ""
  102. $    LO_STRING = ""
  103. $    WRITE SYS$OUTPUT "Working on character ",PRINT_CHAR
  104. $!
  105. $ LOOP:
  106. $    LOOP_VAR = LOOP_VAR + 1
  107. $    UPCHAR_NUM = 0
  108. $    IF (LOOP_VAR .GT. MAX_SIZE)THEN GOTO NEXT_LINE
  109. $    IF (F$EXTRACT(LOOP_VAR-1,1,BIT_1) .EQS. "*") THEN UPCHAR_NUM = UPCHAR_NUM + 1
  110. $    IF (F$EXTRACT(LOOP_VAR-1,1,BIT_2) .EQS. "*") THEN UPCHAR_NUM = UPCHAR_NUM + 2
  111. $    IF (F$EXTRACT(LOOP_VAR-1,1,BIT_3) .EQS. "*") THEN UPCHAR_NUM = UPCHAR_NUM + 4
  112. $    IF (F$EXTRACT(LOOP_VAR-1,1,BIT_4) .EQS. "*") THEN UPCHAR_NUM = UPCHAR_NUM + 8
  113. $    IF (F$EXTRACT(LOOP_VAR-1,1,BIT_5) .EQS. "*") THEN UPCHAR_NUM = UPCHAR_NUM + 16
  114. $    IF (F$EXTRACT(LOOP_VAR-1,1,BIT_6) .EQS. "*") THEN UPCHAR_NUM = UPCHAR_NUM + 32
  115. $    UP_STRING = UP_STRING + F$EXTRACT(UPCHAR_NUM+28,1,ALPHABET)
  116. $    LOCHAR_NUM = 0
  117. $    IF (F$EXTRACT(LOOP_VAR-1,1,BIT_7) .EQS. "*") THEN LOCHAR_NUM = LOCHAR_NUM + 1
  118. $    IF (F$EXTRACT(LOOP_VAR-1,1,BIT_8) .EQS. "*") THEN LOCHAR_NUM = LOCHAR_NUM + 2
  119. $    IF (F$EXTRACT(LOOP_VAR-1,1,BIT_9) .EQS. "*") THEN LOCHAR_NUM = LOCHAR_NUM + 4
  120. $    IF (F$EXTRACT(LOOP_VAR-1,1,BIT_10) .EQS. "*") THEN LOCHAR_NUM = LOCHAR_NUM + 8
  121. $    IF (F$EXTRACT(LOOP_VAR-1,1,BIT_11) .EQS. "*") THEN LOCHAR_NUM = LOCHAR_NUM + 16
  122. $    IF (F$EXTRACT(LOOP_VAR-1,1,BIT_12) .EQS. "*") THEN LOCHAR_NUM = LOCHAR_NUM + 32
  123. $    LO_STRING = LO_STRING + F$EXTRACT(LOCHAR_NUM+28,1,ALPHABET)
  124. $    IF (LOOP_VAR/15*15 .NE. LOOP_VAR) THEN GOTO LOOP
  125. $!
  126. $ NEXT_LINE:
  127. $    PRINT_STRING = PRINT_STRING + F$EXTRACT(PRINT_CHAR-1,1,ALPHABET)
  128. $    CHAR_NUM = PRINT_CHAR+2
  129. $    WRITE OUTPUT_FILE "P1;",CHAR_NUM,";1;0;0;2;12{1",UP_STRING,"/",LO_STRING,"\A"
  130. $    IF (LOOP_VAR .LT. MAX_SIZE)THEN GOTO PROCESS
  131. $    PRINT_STRING = PRINT_STRING + "!"
  132. $    GOTO READ
  133. $!
  134. $ DONE:
  135. $    ELEMENT = 0
  136. $!
  137. $ FINAL_LOOP:
  138. $    OUT_STRING = F$ELEMENT(ELEMENT,"!",PRINT_STRING)
  139. $    IF (OUT_STRING .EQS. "" )THEN GOTO EXIT
  140. $    IF(DIS_MODE.EQS."N")THEN $WRITE OUTPUT_FILE ")1",OUT_STRING,")1"
  141. $    IF(DIS_MODE.EQS."W")THEN $WRITE OUTPUT_FILE "#6)1",OUT_STRING,")1"
  142. $    IF(DIS_MODE.EQS."H")THEN $WRITE OUTPUT_FILE "#3)1",OUT_STRING,")1"
  143. $    IF(DIS_MODE.EQS."H")THEN $WRITE OUTPUT_FILE "#4)1",OUT_STRING,")1"
  144. $    ELEMENT = ELEMENT + 1
  145. $    GOTO FINAL_LOOP
  146. $!
  147. $ NO_INFILE:
  148. $    WRITE SYS$OUTPUT "Input file ''IN_FILE' does not exist"
  149. $    GOTO GET_INFILE_NAME
  150. $!
  151. $ ALREADY:
  152. $    INQUIRE CONTIN "Output file ''OUT_FILE' already exists, replace? (Y/N)"
  153. $    IF (CONTIN .EQS. "Y")THEN GOTO GET_DISPLAY_MODE
  154. $    IF (CONTIN .EQS. "N")THEN GOTO GET_OUTFILE_NAME
  155. $    GOTO ALREADY
  156. $!
  157. $ EXIT:
  158. $    CLOSE INPUT_FILE
  159. $ EXIT1:
  160. $    CLOSE OUTPUT_FILE
  161. $    TYPE=""
  162. $    TYPE 'OUT_FILE
  163. $    EXIT
  164.